梦入琼楼寒有月,行过石树冻无烟

PHP 字符串操作与参数

PHP 字符串是在语言中相当重要的一个操作部分,程序传递给用户的可视化信息即为大部分靠字符串来实现的。

echo() 与 print()

在字符串中主要有echo and print,两个函数,而两个函数之间都是不同功能的,二者存在一定的区别。这就比如print具有一个返回值[^返回值为1],而echo没有返回值,所以echo 比 print函数要快一点,而print与echo的另一个区别就是,echo函数可输出多个字符串,而print则不行:

print
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demos</title>
</head>
<body>
<?php
$one = print "";
echo "$one";
?>
</body>
</html>
echo
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demos</title>
</head>
<body>
<?php
echo "One","Two","Three";
print "One","Two","Three"; // Parse error: syntax error, unexpected ',' ……
?>
</body>
</html>

字符串格式化

printf()

printf()函数可以将一个通过替换值简历的字符串输出到格式化字符串中,而格式化字符串中的每一个替换标记都有一个百分号(%)组成,,后面可能有一个填充字符。字符串的类型说明符为“s”

字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "Hello";
printf ("%s\n",$one);
printf ("%10s\n",$one);
printf ("%010s\n",$one);
?>
</body>
</html>
数值
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = 10;
printf("%d",$one);
?>
</body>
</html>

字符串操作函数

计算字符串个数
strlen()

serlen()函数主要用于计算字符串的长度,当需要计算字符串数目时,可通过strlen()函数进行计算。需要注意的是,当字符串是中文时,则一个中文占2个字节,而英文则占1个字节。

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "Hello,world";
echo strlen($one);
?>
</body>
</html>
字符串大小写
小写转换(strtolower)
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "Hello,world";
echo strtolower($one);
?>
</body>
</html>
大写转换(strtoupper)
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "Hello,world";
echo strtoupper($one);
?>
</body>
</html>
句子首字母大写(ucfirst)!
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "hello,world";
echo ucfirst($one);
?>
</body>
</html>
首字母开头大写(ucwords)
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
echo ucwords("str int hello");
?>
</body>
</html>

字符串裁剪

trim

trim()函数主要将两边的多余空白字符去掉

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = " Hello ";
echo trim($one);
?>
</body>
</html>
ltrim

Itrim()函数主要删除左边相同的字符串内容,而右边可使用rtrim()函数实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "HHHHHellohH";
echo ltrim($one,"H");
?>
</body>
</html>
rtim
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "HHHHHellohH";
echo rtrim($one,"H");
?>
</body>
</html>

字符串的查找与替换

字符串查找
strstr

查找字符串,如需要查找“el”,完整语句是“Hello”,则输出ello

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "Hello";
echo strstr($one, "el");
?>
</body>
</html>
strstr …… if
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demos</title>
</head>
<body>
<?php
$one = "Hello";
$two = "el";
if (strstr($one, $two)) {
echo "包含el";
} else {
echo "不包含el";
}
?>
</body>
</html>
字符串替换
str_replace
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$str = "Hello you";
$replace = "Sun";
$end = str_replace("you", $replace, $str);
echo "$end";
?>
</body>
</html>
多对一替换
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$tit = "Hello is world";
$arry = array("e","o","i","s");
echo str_replace($arry, "", $tit);
?>
</body>
</html>
substr_replace
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
echo substr_replace("abcdefd", "AB", 3);
?>
</body>
</html>

3,3

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
echo substr_replace("abcdefd", "AB", 3,3);
?>
</body>
</html>

字符串比较

在实际的生活之中,经常可以发现通过姓氏笔画或拼音顺序来个多人或多个标题进行排序。而在程序设置中,由字母和数组促成的字符串,同样可以按照指定的规划来进行排序。而常见的字符串比较的函数有:string() 、strcasecmp()、strncmp()、strncasecmp()

如果$one比$two大,则他们都将返回大于0的整数。如果$one比$two小,则返回小于0的整数,再或者两者相等,则返回0

strcmp

strcmp()函数主要用于区分大小写的字符串比较

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
echo strcmp("abcd", "abcD");
?>
</body>
</html>
strncasecmp

strncasecmp()函数和strcmp()函数一样,只不过strncasecmp()函数与strcmp()函数不同的是strncasecmp()函数不需要区分大小写

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
echo strnatcasecmp("abcd", "abcD");
?>
</body>
</html>
strcasecmp

strcasecmp()函数主要用于不区分大小写的比较

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
echo strcasecmp("abcd", "abce");
?>
</body>
</html>
strncmp

strncmp()函数主要用于比较字符串的一部分,一般从字符串的开头进行比较

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
echo strncmp("abcd", "abcdEFD", 4);
?>
</body>
</html>

字符串写HTML

在web开发语言之中,通常都有支持HTML的语句,比如JavaScript他就支持输出html语句,而在PHP之中,可通过htmlspecialchars()函数,把HTML的代码进行转换和存储

在htmlspecialchars()函数中,有两个参数分别为:

ID DA
ENT_COMPAT 默认只转换双引号
ENT_NOQUOTES 都不转换(双引号 )
ENT_QUOTES 转换单引号和双引号
htmlspecialchars
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "<a href='#'>go</a>";
echo htmlspecialchars($one);
?>
</body>
</html>
htmlspecialchars.ENT_NOQUOTES!
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charsets="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "<a href='#'>go</a>";
echo htmlspecialchars($one,ENT_NOQUOTES);
?>
</body>
</html>
HTML转特殊字符

使用htmlspecialchars_decode()函数可以将HTML字符串形式转换为HTML格式,与htmlspecialcharrs()函数相反。

特殊字符转换表
ID DA
& &amp;
&quot;
&#039;
< &lt;
> &gt;
输出一个超链接
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = htmlspecialchars_decode("&lt;a href='#'&gt;demo&lt;/a&gt;");
echo $one;
?>
</body>
</html>

字符串的加密

在PHP中,提供了cryot()函数,可完成PHP的加密功能,但cryot并不是最可靠的。目前最常用的加密函数可以使用md5()函数,可以将字符串转换成一个长为32位的字符串;

而通过cryout()与md5()之间的区别就是cryout()是随机生成的,每次执行时生成的密文都不一样。而在md5()函数中,明文转换为密文的32位字符串是固定的,所以可使用进行判断。

cryout
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "你好世界";
echo crypt($one);
?>
</body>
</html>
md5()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dems</title>
</head>
<body>
<?php
$one = "你好世界";
if (md5($one) == "65396ee4aad0b4f17aacd1c6112ee364") {
echo "OK";
echo "<br>";
echo "当前md5值为:",md5($one);
}
?>
</body>
</html>

列子

简单的留言功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<form name="fone" method="post" action="">
<h3>请输入Email地址:</h3>
<input type="text" name="Email" size=30>
<h3>请输入留言信息</h3>
<textarea name="note" rows=10 cols=30></textarea>
<br><input type="submit" name="bone" value="提交">
<input type="reset" name="btwo" value="清空">
</form>
<?php
if (isset($_POST['bone'])) {
// 接收Email 和 Note
$Email = $_POST['Email'];
$note = $_POST['note'];

if (!$Email || !$note) {
// 判断是否取值
echo "<script>alert('Email地址和留言信息未填写或填写不完整!')</script>";
} else {
$arrayName = array("@" ,$Email );
if (count($arrayName) !=2) {
// 如果有两个@则报错
echo "<script>alert('Email地址格式错误1')</script>";
} else {
$username = $arrayName[0];
$netname = $arrayName[1];

if (strstr($username, ".")or strstr($username, ",")) {
// 如果 username 含有 "."、","则报错
echo "<script>alert('Email地址格式错误!2')</script>";
} else {
// 输出 "<" and ">" 符号
$strone = htmlspecialchars("<");
$strtwo = htmlspecialchars(">");

// 将字母句子第一个改为大写
$newonte = ucwords($note);

echo "<br>";
echo "用户".$strone.$username. $strtwo."您好!&nbsp;";
echo "您是".$netname."网友!<br>";
echo "您的留言是:<br>&nbsp;&nbsp;&nbsp;&nbsp;".$newonte."<br>";
echo "<hr>";
}
}
}
}
?>
</body>
</html>
ID DA FA
echo() 回应[^没有返回值] 输出函数
print() 打印[^返回值为1,比echo()慢]
printf() 字符串的格式化 输出函数
strlen() 计算字符串个数[^当字符串是中文时,则一个中文占2个字节,而英文则占1个字节。] 计算字符串个数
strtolower() 小写转换 大小写转换
strtoupper() 大写转换
ucfirst() 句子首字母大写
ucwords 首字母开头大写
trim() 将两边的多余空白字符去掉 字符串裁剪
ltrim() 要删除左边相同的字符串内容[^右边可使用rtrim()函数实现。]
rtim() 要删除右边相同的字符串内容[^左边可通过ltrim()函数实现]
strstr() 查找字符串[^如需要查找“el”,完整语句是“Hello”,则输出ello] 字符串查找
if……strstr() 查找是否包含某个字符串
str_replace() 替换字符串[^该函数支持多对一进行替换,即通过数组进行] 字符串替换
substr_replace() 通过索引替换
strcmp() 区分大小写的字符串比较 字符串比较
strncasecmp() 不区分大小写的比较
strcasecmp() 不区分大小写的比较
strncmp() 从字符串开头进行比较[^echo strncmp(“abcd”, “abcdEFD”, 4);]
字符串写HTML
ENT_COMPAT 默认只转换双引号 htmlspecialchars()
ENT_NOQUOTES 都不转换(双引号 )
ENT_QUOTES 转换单引号和双引号
HTML转特殊字符
& &amp;
&quot;
&#039;
< &lt;
> &gt;
cryout() 随机生成密文 加密字符串
md5() 使用md5进行加密
⬅️ Go back